package com.yourcompany.api.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yourcompany.api.entity.CreditPay;
import com.yourcompany.api.dto.CreditActivateDTO;
import com.yourcompany.api.dto.CreditPayDTO;
import com.yourcompany.api.dto.CreditRepayDTO;

import java.math.BigDecimal;

public interface CreditPayService extends IService<CreditPay> {
    
    /**
     * 开通先充后付
     */
    void activate(CreditActivateDTO activateDTO);
    
    /**
     * 使用先充后付支付
     */
    String pay(CreditPayDTO payDTO);
    
    /**
     * 还款
     */
    String repay(CreditRepayDTO repayDTO);
    
    /**
     * 获取可用额度
     */
    BigDecimal getAvailableCredit(Long userId);
    
    /**
     * 检查是否可以使用先充后付
     */
    boolean checkCreditAvailable(Long userId, BigDecimal amount);

    /**
     * 获取用户先充后付信息
     */
    CreditPay getByUserId(Long userId);

    /**
     * 检查并处理逾期账单
     * 每天定时任务调用，检查所有用户的逾期情况并进行相应处理
     */
    void checkAndHandleOverdue();

    /**
     * 自动调整信用额度
     * 每月定时任务调用，根据用户的使用情况自动调整信用额度
     */
    void autoAdjustCreditLimit();
} 